package com.vcredit.creditcat.api;

import com.vcredit.creditcat.dto.product.BlackParamDto;
import com.vcredit.creditcat.dto.product.CreditSubmitDto;
import com.vcredit.creditcat.dto.product.ProductDecisionResultDto;
import com.vcredit.creditcat.exception.ProductCanNotApplyException;
import com.vcredit.creditcat.model.CustProductApply;

/**
 * 产品对接接口
 * 
 * @author chengchao
 *
 */
public interface IProductApplyManager {

	/**
	 * 通知申请结果
	 * 
	 * @param resultDto
	 * @param productName
	 * @return
	 * @throws Exception
	 */
	void noticeApplyResult(CustProductApply resultDto, String productName) throws Exception;
	
	
    /**
     * 计算额度
     * @param productName
     * @param paramDto
     * @throws Exception
     */
    ProductDecisionResultDto computeAuditResult(String productName, CreditSubmitDto paramDto) throws Exception;

    /**
    * 查询结果
    * @param identityNo
    * @return
    * @throws Exception
    */
    ProductDecisionResultDto queryAuditResult(String productName, String identityNo) throws Exception;

    /**
     * 能否申请
     * @param productName
     * @param paramDto
     * @return
     * @throws Exception 
     * @throws ProductCanNotApplyException 
     */
    Boolean canApply(String productName, BlackParamDto paramDto) throws ProductCanNotApplyException, Exception;

}
